package common

type Config struct {
	Redis RedisConfigs `json:"redis"`
	App   AppConfigs   `json:"app"`
	Mysql MysqlConfigs `json:"mysql"`
	Jwt   JwtConfig    `json:"jwt"`
	Arc   ArcConfig    `json:"arc"`
	Mail  MailConfig   `json:"mail"`
}

type RedisConfigs struct {
	IP          string `json:"ip"`
	Port        int    `json:"port"`
	Password    string `json:"password"`
	MaxActive   int    `json:"maxActive"`
	IdleTimeout int    `json:"idleTimeout"`
	MaxIdle     int    `json:"maxIdle"`
	Db          int    `json:"db"`
}

type MysqlConfigs struct {
	Url               string `json:"url"`
	MaxOpenConnection int    `json:"maxOpenConnection"`
	MaxIdleConnection int    `json:"maxIdleConnection"`
	ShowSql           bool   `json:"showSql,omitempty"`
	ShowExecTime      bool   `json:"showExecTime,omitempty"`
	LogLevel          string `json:"logLevel,omitempty"`
	LogFile           string `json:"logFile"`
	SqlTraceFile      string `json:"sqlTraceFile"`
}

type AppConfigs struct {
	Name          string  `json:"name"`
	Url           string  `json:"url"`
	Doc           string  `json:"doc"`
	Addr          string  `json:"addr"`
	Debug         bool    `json:"debug"`
	Attachment    string  `json:"attachment"`
	Path          AppPath `json:"path"`
	Face          AppFace `json:"face"`
	Test          bool    `json:"test"`
	Repeat        bool    `json:"repeat"`
	Authorization int     `json:"authorization"`
}

type AppPath struct {
	Bind  string `json:"bind"`
	Check string `json:"check"`
	Info  string `json:"info"`
}

type AppFace struct {
	Thresholdmodel_BGR  float32 `json:"thresholdmodel_BGR"`
	Thresholdmodel_IR   float32 `json:"thresholdmodel_IR"`
	Thresholdmodel_Mask float32 `json:"thresholdmodel_mask"`
}

type AuthConfig struct {
	AuthSecret string `json:"authSecret"`
}

type JwtConfig struct {
	Secret string `json:"secret"`
	Expire int64  `json:"expire"`
}

type ArcConfig struct {
	AppId     string `json:"appId"`
	AppKey    string `json:"appKey"`
	ActiveKey string `json:"activeKey"`
}

type MailConfig struct {
	From      []MailFrom `json:"from"`
	To        []string   `json:"to"`
	Subject   string     `json:"subject"`
	RetryTime int        `json:"retryTime"`
}

type MailFrom struct {
	User     string `json:"user"`
	Password string `json:"password"`
	Host     string `json:"host"`
	Port     string `json:"port"`
	Alias    string `json:"alias"`
}

type JwtClaimInfo struct {
	AppKey string
	Expire float64
}

type TokenReq struct {
	AppKey    string `json:"appKey"`
	AppSecret string `json:"appSecret"`
}

type TokenData struct {
	Token   string `json:"token"`
	Expired int64  `json:"expired"`
}

type FaceCheckReq struct {
	TransId  string `json:"transId"`
	DeviceNo string `json:"deviceNo"`
	Faces    string `json:"faces"`
}

type BindFaceReq struct {
	TransId  string `json:"transId"`
	DeviceNo string `json:"deviceNo"`
	Faces    string `json:"faces"`
	ReaderId string `json:"readerId"`
}

type FaceData struct {
	Id         string `json:"id"`
	ReaderId   string `json:"readerId"`
	ReaderName string `json:"readerName"`
	Photo      string `json:"photo"`
	ModifyTime string `json:"modifyTime"`
	Valid      bool   `json:"valid"`
}

type FaceInfoReq struct {
	TransId string `json:"transId"`
	Faces   string `json:"faces"`
}

type LiveInfo struct {
	IsLive int32 // 0:非真人 1:真人 -1:不确定 -2:传入人脸数>1
}

type TokenQuery struct {
	Token string `url:"token"`
}
